﻿using BPMN.Domain;
using BPMN.Domain.Entity.User;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BPMN.DomianShare;
using System.Threading.Tasks;
using BPMN.Application.Contracts.DTO.Response.UserInfo;
using BPMN.Application.Contracts.DTO.Response;
using BPMN.Application.Contracts.DTO.Response.Permission;
using BPMN.Application.Contracts.DTO.Request.UserInfo;
using System.Data;
using BPMN.Application.Contracts.DTO.Response.RolePermission;

namespace BPMN.Application.IService
{
    public interface IUserAppService : IAppServiceBase<UserInfo>, IScoped
    {
        Task<ResultResponseDto<int>> AddUserInfo(UserInfoRequestDto entity);
        Task<ResultResponseDto<int>> UpdateUserInfo(UserInfoRequestDto entity);
        Task<ResultResponseDto<List<UserInfoShowResponseDto>>> GetUserInfo();
        Task<ResultResponseDto<UserInfoShowResponseDto>> GetUserInfoById(int Id);
        Task<ResultResponseDto<int>> DeleleUserInfo(int UserId);
        Task<ResultResponseDto<int>> LoginAction(string UserName, string Pwd);
        Task<ResultResponseDto<List<TreeDtoResponse>>> PermissionListShow(int UserId);
        Task<ResultResponseDto<DataTable>> ShowUserInfoAndExtendId();
        Task<ResultResponseDto<List<Extend>>> GetExtend();
        Task<ResultResponseDto<int>> AddExtend(Extend Data);
        Task<ResultResponseDto<int>> DelExtend(int id);
        Task<ResultResponseDto<List<Extend>>> GetExtendById();
        Task<ResultResponseDto<string>> AddUserInfoAndExtendId(AddUserDto Dto);
        Task<ResultResponseDto<string>> UpdUserInfoAndExtendId(AddUserDto entity);
        Task<ResultResponseDto<(List<UserInfoShowResponseDto>, List<Attributes>)>> GetUserInfoByIds(int Id);
        Task<ResultResponseDto<string>> RuolUserAdd(List<UserInfoRequestDto> dto);

        Task<ResultResponseDto<RolePermissionResponseShowDto>> GetRolePeimiss(int UserId, int? PermId);

        
    }
}
